﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using libClasesInterfaz.Transacciones;
using System.Data;
using LibProducto;
using LibCliente;
using System.Web.Security;


namespace ProyectoIngenieriaSoftware.Administracion
{
    public partial class Formulario_web15 : System.Web.UI.Page
    {

        private void cargarclientes()
        {
            clsCliente objcliente = new clsCliente();
            objcliente.CodigoClie = txtcodigocliente.Text;
            if (objcliente.Consultar())
            {
                lblnombrecliente.Text = objcliente.NombreClie + " " + objcliente.Apellido1Clie;
                lblError.Text = objcliente.Error = "";
            }
            else
            {
                lblError.Text = objcliente.Error;
                lblnombrecliente.Text = "";
            }
            objcliente = null;

        }
        private void limpiarcontrolesproducto() {

            txtCodigoProducto.Text = "";
            lblnombreproducto.Text = "";
            lblValorunitario.Text = "";
            lblunidadesdisponibles.Text = "";
            txtCantidadSolicitada.Text = "";
            lblValorproducto.Text = "";
        
        }
        private void sumatoriatotalproducto() {

            lblvalortotalapagar.Text = (Convert.ToInt64(lblValorproducto.Text) + Convert.ToInt64(lblvalortotalapagar.Text)).ToString();
            numroProductosSolicitado.Text = (Convert.ToInt64(numroProductosSolicitado.Text) + Convert.ToInt64(txtCantidadSolicitada.Text)).ToString();
       
        }
        private void buscarproducto() {

        clsProducto objproducto = new clsProducto();
        objproducto.codprod=Convert.ToInt32(txtCodigoProducto.Text);
        if (objproducto.Consultar())
        {
            lblnombreproducto.Text = objproducto.NombreProd;
            lblValorunitario.Text = objproducto.ValorProd.ToString();
            lblError.Text = "";
        }
        else lblError.Text = objproducto.Error;
              
        }
        private void buscarinventario() {
            clsinventaromia objinventario = new clsinventaromia();
            objinventario.CodigoProduto =Convert.ToInt32( txtCodigoProducto.Text);
            if (objinventario.Consultarexistencia()) {

                lblunidadesdisponibles.Text = objinventario.UnidadesDiponibles.ToString();
            }
            else lblError.Text = objinventario.Error;        
        }
        private void validarunidadedisponibles()
        {
            if (txtCantidadSolicitada.Text != string.Empty)
            { 
               
                int unidadesdisponibles=Convert.ToInt32(lblunidadesdisponibles.Text);
                int unidadessolicitadas=Convert.ToInt32(txtCantidadSolicitada.Text);

                if (unidadessolicitadas > unidadesdisponibles)
                {
                    lblError.Text = "La cantidad solicitada de item de productos debe ser menor o igual a: " + unidadesdisponibles;
                    txtCantidadSolicitada.Focus();
                    txtCantidadSolicitada.Text = "0";
                }
                if (txtCantidadSolicitada.Text == "0")
                {
                    lblError.Text = "Por favor ingrese la cantidad solicitada ";
                    txtCantidadSolicitada.Focus();
                    txtCantidadSolicitada.Text = "0";
                }
                else
                    lblError.Text = "";
            }
        
        }
        private void valortotal()
        {
         Int32 valorunitario=Convert.ToInt32(  lblValorunitario.Text);
         Int32 cantidaddeproductospedidos = Convert.ToInt32(txtCantidadSolicitada.Text);
         lblValorproducto.Text = (valorunitario * cantidaddeproductospedidos).ToString();

        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (txtcodigocliente.Text != string.Empty)
                cargarclientes();


            if (txtCodigoProducto.Text != string.Empty)
            {
                buscarproducto();
                buscarinventario();
            
            }
            if (txtCantidadSolicitada.Text != string.Empty && lblunidadesdisponibles.Text!=string.Empty)
            {
                validarunidadedisponibles();
                valortotal();

            }
            if (!Page.IsPostBack)
            {

                UpdatePanelControlesFactura.Visible = false;
                
 
            }
        }
        protected void MnuOpcionesPrincipales_MenuItemClick(object sender, MenuEventArgs e)
        {


            switch (this.MnuOpcionesPrincipales.SelectedValue)//para saber que opcion  selecciono, el selectedvalue es el que tiene el nombre de las opciones
            {
                case "opcRealizarPedido":
                    if (Roles.IsUserInRole("Cajero"))
                    {
                        UpdatePanelControlesFactura.Visible = true;

                        MnuOpcionesPrincipales.Visible = false;
                    }
                    else
                        lblError.Text = "No tienes permiso para realizar transacciones de pedidos";
                  break;

                case "opcBuscarPedido":
                   break;


            }
        } 
        protected void btnGrabar_Click1(object sender, EventArgs e)
        {
            if (txtCodigoProducto.Text == string.Empty)
            {
                lblError.Text = "agregue el producto antes de grabar";
                return;
            }
            if (lblnombreproducto.Text == string.Empty)
            {
                lblError.Text = "Busque el producto antes de grabar";
                return;
            }
            if (lblValorunitario.Text == string.Empty)
            {
                lblError.Text = "Busque el producto antes de grabar";
                return;
            }
               if (lblunidadesdisponibles.Text == string.Empty)
            {
                lblError.Text = "Busque el producto antes de grabar";
                return;
            }
               if (txtCantidadSolicitada.Text == string.Empty || txtCantidadSolicitada.Text=="0")
            {
                txtCantidadSolicitada.Focus();
                lblError.Text = "agregue la cantidad solicitada antes de grabar";
                return;
            }
               if (lblValorproducto.Text == string.Empty)
            {
                lblError.Text = "Error con la captura de valor de producto consulte al administrador";
                return;
            }

            

            string strNombreProducto;
            Int32 intCodigoProducto, intValorUnitario, intCantidadsolicitada, unidadesdisponibles;
            Int32 valortotalProducto;

            intCodigoProducto = Convert.ToInt32(txtCodigoProducto.Text);
            strNombreProducto = lblnombreproducto.Text;
            intValorUnitario = Convert.ToInt32(lblValorunitario.Text);
            unidadesdisponibles = Convert.ToInt32(lblunidadesdisponibles.Text);
            intCantidadsolicitada = Convert.ToInt32(txtCantidadSolicitada.Text);
            valortotalProducto = Convert.ToInt32(lblValorproducto.Text);

            clsGridDetalleFactura objDetalle = new clsGridDetalleFactura();

            objDetalle.Nombreproduct = strNombreProducto;
            objDetalle.Codigodeproduct = intCodigoProducto;
            objDetalle.Valorunitari = Convert.ToInt32(intValorUnitario);
            objDetalle.Unidadesdisponible = unidadesdisponibles;
            objDetalle.Cantidadsolicitad = Convert.ToInt32(txtCantidadSolicitada.Text);
            objDetalle.Totalproduct = Convert.ToInt32(lblValorproducto.Text);

            objDetalle.ObjtblDetall = (DataTable)Session["TablaDetalle"];

            if (objDetalle.Grabar())
            {
                grdDetalleFactura.DataSource = objDetalle.ObjtblDetall;
                grdDetalleFactura.DataBind();
                Session["TablaDetalle"] = (DataTable)objDetalle.ObjtblDetall;
                sumatoriatotalproducto();
                limpiarcontrolesproducto();
                txtCodigoProducto.Focus();
            }
            else
            {
                lblError.Text = objDetalle.StrErro;
            }
            objDetalle = null;
        }
        protected void txtCodigoProducto_Disposed(object sender, EventArgs e)
        {
            

        }

        protected void btnGenerarFactura_Click1(object sender, EventArgs e)
        {
            if (txtcodigocliente.Text == string.Empty)
            {
                lblError.Text = "Busque el cliente antes de generar factura";
                return;
            }
            if (lblnombrecliente.Text == string.Empty)
            {
                lblError.Text = "Busque el cliente antes de generar factura";
                return;
            }
            if (numroProductosSolicitado.Text == string.Empty)
            {
                lblError.Text = "No hay ningun articulo para realizar venta";
                return;
            }
            if (lblvalortotalapagar.Text == string.Empty)
            {
                lblError.Text = "No hay ningun articulo para realizar venta";
                return;
            }
            if (grdDetalleFactura == null)
            {
                lblError.Text = "No hay ningun articulo para realizar venta";
                return;
            }

            if ((DataTable)Session["TablaDetalle"] == null)
            {
                lblError.Text = "No hay ningun articulo no hay articulos para realizar venta";
                return;
            }
            clsFactura objFactura = new clsFactura();

            objFactura.ObjtblDetalleFactur = (DataTable)Session["TablaDetalle"];
            objFactura.StrCodigo_CLI = txtcodigocliente.Text;
            objFactura.DtmFecha_PED = DateTime.Now;
            objFactura.StrCodigo_EMP = "cajero";
            objFactura.StrValorPagad = lblvalortotalapagar.Text;
            objFactura.StrCantidadProductosComprado = Convert.ToInt32(numroProductosSolicitado.Text);

            if (objFactura.Grabar())
            {
                lblError.Text = "Se grabò la factura " + objFactura.IntCodigo_PED.ToString()+" a nombre de "+lblnombrecliente.Text;
                //Limpiar el detalle de la factura
                Session["TablaDetalle"] = null;
                grdDetalleFactura.DataSource = null;
                grdDetalleFactura.DataBind();

                txtcodigocliente.Text = "";
                lblnombrecliente.Text = "";
                lblValorproducto.Text="0";
                numroProductosSolicitado.Text = "0";

                
            }
            else
            {
                lblError.Text = objFactura.StrErro;
            }
            objFactura = null;

        }

        protected void Button4_Click(object sender, EventArgs e)
        {
            UpdatePanelControlesFactura.Visible = false;
            MnuOpcionesPrincipales.Visible = true;
            txtcodigocliente.Text=string.Empty;
                lblnombrecliente.Text=string.Empty;
                numroProductosSolicitado.Text="0";
                    lblvalortotalapagar.Text="0";
                    txtCodigoProducto.Text=string.Empty;
                    txtCantidadSolicitada.Text = string.Empty;
                    Session["TablaDetalle"] = null;
                    grdDetalleFactura.DataSource = null;
                    grdDetalleFactura.DataBind();
        }

        
       
    }
}